# _*_ coding=utf8 _*_
from functools import wraps
from flask import abort
from flask_login import current_user


def permission_required(permission):
    """权限控制装饰器"""
    def decorator(f):
        @wraps(f)
        def decorated_function(*args, **kwargs):
            if not current_user.can(permission):
                abort(403)
            return f(*args, **kwargs)
        return decorated_function
    return decorator


def admin_required(f):
    """超级管理员控制器"""
    return permission_required(permission_list[u'超级管理员'])(f)


"""
权限控制ID用十六进制表示，一共采用了16位，每4位对应一个模块，每位对应一个操作，分别是增删改查
IDC管理员，网络管理员，用户管理员，系统管理员
"""
permission_list = {
    u'超级管理员': 0xffff,
    u'用户管理员': 0x000f,
    u'IDC管理员': 0x00f0,
    u'网络管理员': 0x0f00,
    u'系统管理员': 0xf000,
    u'普通用户': 0x0000
}
